package atguigu2.lock;

import java.util.concurrent.TimeUnit;

/**
 * @AUTHOR LYF
 * @DATE 2022/2/3
 * @VERSION 1.0
 * @DESC
 * synchronized的八种情况
 *
 *
 * 1.标准访问 （一部手机）
 *  SMS,
 *  mail
 * 2.停留四秒访问
 *  SMS
 *  mail
 *
 * 1,2说明 syn的作用访问为该对象
 *
 * 3. 打印 hello
 * hello,
 * sms
 * 1,2,3说明区分  线程的创建顺序与syn的同步作用范围
 *
 * 4. 两部手机
 *  mail
 *  SMS
 * 因为不同对象了，，
 *
 * 5，6 考虑加上static静态方法；
 * 锁的范围是class了并不是对象了，字节对象
 * SMS ，mail
 *
 *
 *
 *
 */


class Phone{

    public synchronized void sendSMS() throws InterruptedException {
        TimeUnit.SECONDS.sleep(2);//睡眠四秒
        System.out.println(Thread.currentThread().getName()+"::send...sms");
    }

    public synchronized void sendMail(){
        System.out.println(Thread.currentThread().getName()+"::send...mail");
    }

    public void getHello(){
        System.out.println("hello");
    }
}



public class SynEightSituation {
    public static void main(String[] args) throws InterruptedException {
        Phone phone = new Phone();
        new Thread(()->{
            try {
                phone.sendSMS();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"AA").start();

        Thread.sleep(100);

        new Thread(()->{
            //phone.sendMail();
            phone.getHello();
        },"BB").start();


    }
}
